﻿#ifndef PLOTBITMAP_H
#define PLOTBITMAP_H

#include <QObject>
#include <QPainter>
#include <QBitmap>
#include <QFile>
//#include <gdiplus.h>

//BMP文件头（14字节）
typedef struct                       /**** BMP file header structure ****/
{
    unsigned short bfType;      /* 类型 */
    unsigned int   bfSize;           /* 整个bmp文件大小 */
    unsigned short bfReserved1;      /* Reserved */
    unsigned short bfReserved2;      /* ... */
    unsigned int   bfOffBits;        /* 偏移数，位图文件头+位图信息头+调色板大小 */
} BmpHeader;

//位图信息头（40字节）
typedef struct                       /**** BMP file info structure ****/
{
    unsigned int   biSize;           /* Size of info header */
    int            biWidth;          /* Width of image */
    int            biHeight;         /* Height of image */
    unsigned short biPlanes;         /* Number of color planes */
    unsigned short biBitCount;       /* Number of bits per pixel */
    unsigned int   biCompression;    /* Type of compression to use */
    unsigned int   biSizeImage;      /* Size of image data */
    int            biXPelsPerMeter;  /* X pixels per meter */
    int            biYPelsPerMeter;  /* Y pixels per meter */
    unsigned int   biClrUsed;        /* Number of colors used */
    unsigned int   biClrImportant;   /* Number of important colors */
} BmpInfo;

class PlotBitmap : public QObject
{
    Q_OBJECT
public:
    explicit PlotBitmap(QObject *parent = NULL);

public:
    //创建单色的位图
    //输入参数:
    //  bTransparent  透明显示
    //  crBkColor  背景颜色(在透明显示时位图中颜色为crBkColor的点将不被显示在纸样上)
    //  iWidth 位图的宽,单位:像素
    //  iHeight 位图的高,单位:像素
    //  iStride 位图每行的字节数
    //  nPixFormat 位图点的格式(见GDI+中BitmapData类PixelFormat的定义)
    //  pBmpData 位图数据(保存数据的顺序是从左到右,从上到下)
    //返回值:
    //  NULL 失败
    //  非NULL 新生成的位图指针
    //QBitmap Create1BPPBitmap(int bTransparent,int crBkColor,int iWidth,int iHeight,int iStride,int nPixFormat,char *pBmpData);
    QBitmap Create1BPPBitmap(int iWidth,int iHeight,unsigned char *pBmpData);

    void SetUncharBit(unsigned char & dat, int index, int val);
signals:

public slots:
};

#endif // PLOTBITMAP_H
